#include <iostream>
#define MAXSIZE 30
using namespace std;

int g[MAXSIZE][MAXSIZE];
int a[8][2] = { {-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1} };
int k = 0;
int p,q;
int path[MAXSIZE][2];
void output(int path[][2] ){
	for(int i=0; i<k; i++){
		printf("%c%d",path[i][0]+'A',path[i][1]+1);
	}
	cout << endl;
}
bool is_can_visit(int x,int y){
	if( x>=0 && x<q && y>=0 && y<p && g[x][y]==0 ) return true;
	else return false;
}
bool journey(int x,int y,int cnt){
	g[x][y] = 1; 
	path[cnt][0] = x; path[cnt][1] = y;
	cnt++;
	if( cnt==k ){
		output(path);
		return true;
	}
	for(int i=0; i<8; i++){
		int x_next = x + a[i][0], y_next = y + a[i][1];
		if( is_can_visit(x_next,y_next) ){
			if( journey(x_next,y_next,cnt) ) return true;
		}
	}
	g[x][y] = 0;
	return false;
}
int main(){
	freopen("in.txt","r",stdin);
	int n;
	cin >> n;
	for(int c=0; c<n; c++ ){
		cin >> p >> q;
		k = p*q;
		cout << "Scenario #"<< c+1 << ":" <<endl;
		int flag = 0;
		for( int i=0; i<q; i++)
			for(int j=0; j<p; j++)
			if( journey(i,j,0) ){ flag = 1; break; }
		if( flag==0 ) cout << "impossible" << endl;
		cout << endl;
		for(int i=0; i<MAXSIZE; i++)
			for(int j=0; j<MAXSIZE; j++)
				g[i][j] = 0;
	}
	return 0;
}
